home *** CD-ROM | disk | FTP | other *** search
/ Aminet 38 / Aminet 38 (2000)(Schatztruhe)[!][Aug 2000].iso / Aminet / misc / math / libalgo.lha / algomath / src / sdigalt.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-30  |  480 b   |  38 lines

  1. /* alternating sum of digits */
  2.  
  3. #include "defs.h"
  4.  
  5. int am_sumdigitsalt(int n)
  6. {
  7.     int i;
  8.     int Sum = 0;
  9.     int PlusMinus = 1;
  10.  
  11.     i=0;
  12.     if(n<0)
  13.         n = -n;
  14.  
  15.     while(n < _am_asciiconv[i])
  16.         i++;
  17.     for(;i < 9;i++)
  18.     {
  19.         if(PlusMinus)
  20.             while(n >= _am_asciiconv[i])
  21.             {
  22.                 n -= _am_asciiconv[i];
  23.                 Sum++;
  24.             }
  25.         else
  26.             while(n >= _am_asciiconv[i])
  27.             {
  28.                 n -= _am_asciiconv[i];
  29.                 Sum--;
  30.             }
  31.         PlusMinus = 1 - PlusMinus;
  32.     }
  33.  
  34.     if(PlusMinus)
  35.         return Sum + n;
  36.     else
  37.         return Sum - n;
  38. }